今天這篇來介紹如何在 Series 和 DataFrame 上面檢查是否有重複的標籤,以及如何在 Series 和 DataFrame 上面做運算。
首先先建立帶有重複標籤的物件
dict_ = {'guitar': [2, 3, 4, 11], 'bass': [5, 6, 7, 12], 'keyboard': [8, 9, 10, 13]}
instrument = pd.DataFrame(dict_, index=['A', 'B', 'C', 'B'])
print(instrument)
輸出結果
guitar bass keyboard
A 2 5 8
B 3 6 9
C 4 7 10
B 11 12 13 #這一列是重複的
這個函數會在檢查到第二個重複的標籤時返回 True
print(instrument.index.duplicated())
輸出結果
[False False False True]
這邊的用法是,先將返回的布林值陣列儲存到 duplicated 這個變數上,再利用 '~' 這個取反運算子取得 duplicated 的相反值,接下來在用布林索引的方式來取值,藉以達到排除掉重複索引的目的
duplicated = instrument.index.duplicated()
instrument = instrument[~duplicated] #返回True的索引
print(instrument)
輸出結果
guitar bass keyboard
A 2 5 8
B 3 6 9
C 4 7 10
.columns.duplicate() 的使用方式跟上面一樣,這邊就不另外在做示範了,請讀者自己嘗試看看喔!
先建立兩個 Series 物件
data_1 = pd.Series([10, 20, 30, 40], index=['a', 'b', 'c', 'd'])
data_2 = pd.Series([10, 10, 10], index=['a', 'b', 'c'])
print(data_1)
print(data_2)
輸出結果
a 10
b 20
c 30
d 40
dtype: int64
a 10
b 10
c 10
dtype: int64
使用 .add() 相加
print('#1')
print(data_1.add(data_2))
print('\n#2')
print(data_1.add(data_2, fill_value=10))
輸出結果
#1
a 20.0
b 30.0
c 40.0
d NaN
dtype: float64
#2
a 20.0
b 30.0
c 40.0
d 50.0
dtype: float64
使用 .sub() 相減
print(data_1.sub(data_2))
輸出結果
a 0.0
b 10.0
c 20.0
d NaN
dtype: float64
使用 .mul() 相乘
print(data_1.mul(data_2))
輸出結果
a 100.0
b 200.0
c 300.0
d NaN
dtype: float64
使用 .div() 相除
print(data_1.div(data_2))
輸出結果
a 1.0
b 2.0
c 3.0
d NaN
dtype: float64
下一篇將繼續介紹 DataFrame 相關的運算函數和更多應用!